package com.qiyang.lambda;


interface IMath {
    int add(int x, int y);
}

interface IMath2 {
    int subtract(int x, int y);
}

/**
 * Created on 2018/8/4.
 *
 * @author sehuaqi.
 * 描述：
 */
public class TypeDemo {


    public static void main(String args[]) {
        //执行函数

        //变量类型定义
        IMath iMath = (x, y) -> x + y;

        System.out.println(iMath.add(1, 2));

        //数组类型定义
        IMath[] iMaths = {(x, y) -> x + y, (x, y) -> x + y + 0};

        System.out.println(iMaths[1].add(5, 8));

        //强转
        Object obj = (IMath) (x, y) -> x + y;

        //返回类型
        IMath iMathReturn = createIMath();

        //自动匹配到接口中的方法
        TypeDemo demo = new TypeDemo();
        //demo.test((x, y) -> x + y);

        //当接口有两重性时，需要进行强转
        demo.test((IMath2) (x, y) -> x - y);

    }

    public void test(IMath iMath) {
        System.out.println("这是IMath接口输出的：" + iMath.add(1, 2));
    }

    public void test(IMath2 iMath) {
        System.out.println("这是IMath2接口输出的：" + iMath.subtract(7, 5));
    }

    //返回
    public static IMath createIMath() {

        return (x, y) -> x + y;
    }

}
